from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import urlfetch
from StringIO import StringIO 

import BeautifulSoup
from PyRSS2Gen import RSSItem, Guid
import ScrapeNFeed
import re
#import urllib2
url_base = "http://www.jobrapido.it"
search = "/?w=erp&l=lombardia"
url = url_base + search
from datetime import date
import sys
import pickle


jobrapidoerpxml = StringIO()
jobrapidoerppickle = StringIO()

class JobrapidoFeed(ScrapeNFeed.ScrapedFeed):

    def HTML2RSS(self, headers, body):
        soup = BeautifulSoup.BeautifulSoup(body)
        annunci = soup.findAll('a',id=re.compile('SearchResultSlot'))
        items = []
        for annuncio in annunci:
		annuncio_link = unicode(annuncio['href'])
		annuncio_title = annuncio.contents[0]
		if annuncio_link.find("/") == 0:
# cerca il link nella pagina intermedia di jobrapido
			annuncio_link = url_base + annuncio_link
			try:			
				result = urlfetch.fetch(annuncio_link)
				html = result.content
			except  :
				annuncio_link2 = annuncio_link
			else:
				soup_middle = BeautifulSoup.BeautifulSoup(html)
				annuncio_link2 = soup_middle.find('a')
			if annuncio_link2 != None :
			 annuncio_link = unicode (annuncio_link2['href'])
#controllare se annuncio_link registrato
		if (annuncio_link not in SavedRSS.list) :
## da ripristinare per avere il contenuto dell' articolo
#			try:
#				result = urlfetch.fetch(annuncio_link)
#				html = result.content
#			except :
#				annuncio_html = 'Impossibile scaricare il sito'
#			else :
#				annuncio_html = BeautifulSoup.BeautifulSoup(html)
#			annuncio_html = ' '
## fine : da ripristinare per avere il contenuto dell' articolo

        		items.append(RSSItem(title=unicode(annuncio_title),description=unicode(annuncio_html),link=unicode(annuncio_link)))
			SavedRSS.list[annuncio_link]=date.today()
			print ("salvato"+annuncio_link)
				
        self.addRSSItems(items)
	

#iterazione sulle pagine di jobrapido 
#for suffix in ['','&p=2','&p=3','&p=4','&p=5','&p=6','&p=7'] :
#	JobrapidoFeed.load("Annunci JobRapido",url+suffix,"Tutti gli annunci di jobrapido",'/home/mrivo/public_html/jobrapido.xml','/home/mrivo/public_html/jobrapido.pickle',50)

#JobrapidoFeed.load("Annunci JobRapido",url+sys.argv[1],"Tutti gli annunci di jobrapido erp",'/home/mrivo/public_html/jobrapidoerp.xml','/home/mrivo/public_html/jobrapidoerp.pickle',50)
#JobrapidoFeed.load("Annunci JobRapido",url+sys.argv[1],"Tutti gli annunci di jobrapido erp",'/tmp/jobrapidoerp.xml','/tmp/jobrapidoerp.pickle',50)
#SavedRSS.Write()


class MainPage(webapp.RequestHandler):
  def get(self):
#	self.response.headers['Content-Type'] = 'text/plain'
	JobrapidoFeed.load("Annunci JobRapido",url,"Tutti gli annunci di jobrapido erp",self.response.out,jobrapidoerppickle,50)


application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)


def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()
